package com.wlyuan.index.api.dto.order;

import com.alibaba.fastjson.JSONObject;
import com.wlyuan.index.api.dto.Versioned;
import com.wlyuan.order.dto.OrderAddressDTO;
import com.wlyuan.order.vo.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

@Data
public class OrderIndexDTO implements Versioned, Serializable {
    @ApiModelProperty("订单ID")
    private Long orderId;
    @ApiModelProperty("单据编号")
    private String orderNo;
    @ApiModelProperty("合同号")
    private String contractNo;
    @ApiModelProperty("发货方名称")
    private String customerName;
    @ApiModelProperty("发货方Id")
    private Long customerId;
    @ApiModelProperty("发货方类型")
    private Long customerType;
    @ApiModelProperty("承运方Id")
    private Long carrierId;
    @ApiModelProperty("承运方名称")
    private String carrierName;
    @ApiModelProperty("发货时间")
    private LocalDateTime fromTime;
    @ApiModelProperty("要求到货日期")
    private LocalDateTime toTime;
    @ApiModelProperty("收货方名称")
    private String consigneeName;
    @ApiModelProperty("收货方Id")
    private Long consigneeId;
    @ApiModelProperty("收货地址")
    private OrderAddressDTO toAddress;
    @ApiModelProperty("发货地址")
    private OrderAddressDTO fromAddress;
    @ApiModelProperty("总重量")
    private BigDecimal totalWeight;
    @ApiModelProperty("总体积")
    private BigDecimal totalVolume;
    @ApiModelProperty("总价值")
    private BigDecimal totalValue;
    @ApiModelProperty("总数量")
    private Integer totalQuantity;
    @ApiModelProperty("总项数")
    private Long totalSize;
    @ApiModelProperty("价值补差")
    private BigDecimal differenceValue;
    @ApiModelProperty("重量补差")
    private BigDecimal differenceWeight;
    @ApiModelProperty("体积补差")
    private BigDecimal differenceVolume;
    private BigDecimal calculateWeight;
    private BigDecimal calculateValue;
    private BigDecimal calculateVolume;
    @ApiModelProperty("订单状态")
    private Integer status;
    @ApiModelProperty("车辆")
    private OrderVehicleVO vehicle;
    @ApiModelProperty("运输距离")
    private Integer distanceType;
    private Integer billingMode;
    private Integer billingUnit;
    private Boolean insure;
    private Boolean pick;
    private Boolean deliver;
    private Boolean load;
    private Boolean unload;
    private Integer cargoType;
    private String cargoTypeName;
    private Integer packageMode;
    private String packageModeName;
    @ApiModelProperty("运输模式")
    private Integer transportMode;
    @ApiModelProperty("最高湿度")
    private BigDecimal maxHumidity;
    @ApiModelProperty("最低湿度")
    private BigDecimal minHumidity;
    @ApiModelProperty("最高温度")
    private BigDecimal maxTemperature;
    @ApiModelProperty("最低温度")
    private BigDecimal minTemperature;
    @ApiModelProperty("时效天数")
    private Integer days;
    @ApiModelProperty("签收信息")
    private OrderSignVO sign;
    @ApiModelProperty("是否已签收")
    private Boolean signed;
    @ApiModelProperty("签收时间")
    private LocalDateTime signTime;
    @ApiModelProperty("回单信息")
    private OrderReceiptVO receipt;
    @ApiModelProperty("是否已回单")
    private Boolean receipted;
    @ApiModelProperty("回单时间")
    private LocalDateTime receiptTime;
    @ApiModelProperty("评分信息")
    private OrderScoreVO score;
    @ApiModelProperty("设备信息")
    private OrderDeviceVO device;
    @ApiModelProperty("是否绑定设备")
    private Boolean hasDevice;
    @ApiModelProperty("是否有快递信息")
    private Boolean hasExpress;
    @ApiModelProperty("跟踪类型")
    private Integer trackType;
    @ApiModelProperty("跟踪单号")
    private String trackNo;
    @ApiModelProperty("是否虚拟设备")
    private Boolean hasVirtual;
    @ApiModelProperty("跟踪信息")
    private OrderTrackVO track;
    @ApiModelProperty("是否延期")
    private Boolean arriveDelayed;
    @ApiModelProperty("是否延期签收")
    private Boolean delayed;
    @ApiModelProperty("延时天数")
    private Integer delayedDays;
    @ApiModelProperty("是否生成证书")
    private Boolean hasCert;
    @ApiModelProperty("是否开通证书")
    private Boolean generateCert;
    @ApiModelProperty("证书id")
    private String certId;
    @ApiModelProperty("异常")
    private List<Integer> exceptions;
    @ApiModelProperty("运输状态")
    private Integer transportStatus;
    @ApiModelProperty("备注信息")
    private String remarks;
    @ApiModelProperty("创建人")
    private Long createBy;
    @ApiModelProperty("创建人名称")
    private String creatorName;
    @ApiModelProperty("创建时间")
    private LocalDateTime createAt;
    @ApiModelProperty("关单人")
    private Long closeBy;
    @ApiModelProperty("关单原因")
    private String closeReason;
    @ApiModelProperty("关单时间")
    private LocalDateTime closeAt;
    @ApiModelProperty("是否已关单")
    private Boolean closed;
    @ApiModelProperty("租户ID")
    private Long tenantId;
    private JSONObject echo;
    private String sourceId;
    private LocalDateTime applyPatchAt;
    private Set<String> businessNos;
    private Long version;
}
